package main

import "fmt"

//尾插入List头
func insertTail(listName string, val string) (int64, error) {
	res := client.RPush(listName, val)
	if res.Err() != nil {
		fmt.Printf("尾插入失败了 %v\n", res.Err())
		return 0, res.Err()
	}
	return res.Val(), nil
}

//头插入list
func insertHead(listName string, val string) (int64, error) {
	res := client.LPush(listName, val)
	if res.Err() != nil {
		fmt.Printf("头插入失败了 %v\n", res.Err())
		return 0, res.Err()
	}
	return res.Val(), nil
}

//返回一个List的长度
func listLen(listName string) (int64, error) {
	length, err := client.LLen(listName).Result()
	if err != nil {
		fmt.Printf("查询list长度失败了 %v\n", err)
	}
	return length, err
}

//删除一个List头部的元素
func delListHead(listName string) (string, error) {
	val, err := client.LPop(listName).Result()
	if err != nil {
		fmt.Printf("list删除头部元素失败了 %v\n", err)
	}
	return val, err
}

//删除一个List头部的元素
func delListTail(listName string) (string, error) {
	val, err := client.RPop(listName).Result()
	if err != nil {
		fmt.Printf("list删除尾部元素失败了 %v\n", err)
	}
	return val, err
}

//其它未实现操作
//client.LRange() 返回一个链表每个范围的元素
//client.LPushX() 往一个链表里一次存多个元素
//client.LSet() 指定链表某个Index插入元素
//client.LIndex() 返回链表某个Index的元素
